package com.jiwei.system.dao;

import com.jiwei.system.pojo.Log;
import com.jiwei.system.pojo.Task;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.session.SqlSession;
import org.json.JSONObject;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import javax.swing.plaf.basic.BasicListUI;
import java.util.List;
import java.util.Map;

@Mapper
public interface RepairTaskMapper {
    //插入新任务
    int insertRepairTask(Task task);

    //初始化新任务日志
    void insertRepairTaskLog(Map<String,Object> attribute);

    //插入图片
    void insertRepairTaskPicture(Map<String,Object> attribute1);

    //用户查看我的报修历史
    List<String> queryTaskByPhoneNumber(String phoneNumber);

    //用户获取报修任务的数量
    int queryTaskNumsByPhoneNumber(String phoneNumber);

    //用户取消未处理任务
    void cancelUserTask(Map<String, Object> attribute);

    //用户查看任务详情
     List usergetTaskDetail(Map<String, Object> attribute);

    //成员查询自己所接的任务用
    List<Task> queryTaskByMemberAccount( String account);

    //成员查询自己所接的任务详情
    List getTaskDetailById(int id);

    //获取任务日志
    String getTaskLog(int id);

    List<String> getTaskPicture(int id);

    //获取所有任务 线上线下
    List<Task> queryAllTask(@Param(value = "start") int start, @Param(value = "limit") int limit);

    //获取所有任务的数量
    @Select("select count(*) from task_base ")
    int queryAlltaskNum();

    //获取所有线下任务
    List<Task> queryAllOfflineTask(@Param(value = "start") int start, @Param(value = "limit") int limit,@Param(value = "method") String method);

    //获取不同状态的线下任务
    List<Task> queryOfflineTaskByStatus(@Param(value = "start") int start, @Param(value = "limit") int limit,@Param(value = "method") String method,@Param(value = "status") String status);

    //获取所有线下任务的数量
    @Select("select count(*) from task_base where repair_method =#{method} ")
    int queryAllOfflinetaskNum(String method);

    //获取不同状态的线上任务的数量(所有 取消 已完成 进行中 未处理)
    @Select("select count(*) from task_base where repair_method =#{method} and status=#{status} ")
    int queryOfflineTaskNumByStatus(@Param(value = "method") String method,@Param(value = "status") String status);

    //获取所有线上任务
    List<Task> queryAllOnlineTask(@Param(value = "start") int start, @Param(value = "limit") int limit,@Param(value = "method") String method);

    //获取不同状态的线上任务
    List<Task> queryOnlineTaskByStatus(@Param(value = "start") int start, @Param(value = "limit") int limit,@Param(value = "method") String method,@Param(value = "status") String status);

    //获取所有线下任务的数量
    @Select("select count(*) from task_base where repair_method =#{method} ")
    int queryAllOnlinetaskNum(String method);

    //获取不同状态的线上任务的数量(所有 取消 已完成 进行中 未处理)
    @Select("select count(*) from task_base where repair_method =#{method} and status=#{status} ")
    int queryOnlineTaskNumByStatus(@Param(value = "method") String method,@Param(value = "status") String status);

    @Delete("delete from task_member where taskid = #{taskid};")
    void deleteTaskMemberByid(int taskid);

    //发布任务是插入（修改）参与队员
    void setParticipant(Map<String, Object> attribute);

    //修改任务状态
    void modifyTaskStatus(@Param(value = "id") int id,@Param(value = "status") String status, @Param(value = "endDate") String endDate);

    //修改任务日志
    void modifyTaskLog(Map<String, Object> attribute);
}
